﻿// ------------------------------------------------------------------------
// 项目名称：Canroc.Net 
// 版权归属：Canroc（https://gitee.com/canroc）
//
// 许可证信息
// Canroc.Net项目主要遵循 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-APACHE 文件。
//
// 使用条款：
// 1.使用本项目应遵守相关法律法规和许可证的要求。
// 2.不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动。
// 3.任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任
//
// 免责声明
// 对于因使用本代码而产生的任何直接、间接、偶然、特殊或后果性损害，我们不承担任何责任。
//
// 其他重要信息
// Canroc.Net 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。
// ------------------------------------------------------------------------

using System.Data;

namespace Canroc.Net.Core.Helper;

/// <summary>
///     DataTable帮助类
/// </summary>
public class DataTableHelper
{
    /// <summary>
    ///     比较两个DataTable 表结构是否一样
    /// </summary>
    /// <param name="dt1"></param>
    /// <param name="dt2"></param>
    /// <param name="order">是否要求两个DataTable列顺序一样</param>
    /// <returns></returns>
    public static bool Compare(DataTable dt1, DataTable dt2, bool order = true)
    {
        if (dt1.Columns.Count == dt2.Columns.Count)
        {
            if (order) //如果列的顺序也要一样
            {
                for (var i = 0; i < dt1.Columns.Count; i++)
                {
                    if (dt1.Columns[i].DataType != dt2.Columns[2].DataType)
                    {
                        return false;
                    }
                }
            }
            else
            {
                foreach (DataColumn column in dt1.Columns)
                {
                    if (dt2.Columns.Contains(column.ColumnName))
                    {
                        if (dt2.Columns[column.ColumnName]!.DataType != column.DataType)
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
            }
        }
        else
        {
            return false;
        }

        return true;
    }
}